Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BE] feat: 전체 태그 목록 조회 기능 추가 #161

Merged
merged 10 commits into from
Jul 28, 2023

Conversation

Go-Jaecheol
Copy link
Collaborator

@Go-Jaecheol Go-Jaecheol commented Jul 27, 2023

Issue

✨ 구현한 기능

전체 태그 목록을 조회하는 기능 구현

  • 태그 타입에 맞게 태그 목록을 리스트로 반환하도록 구현
    • 태그 타입 : TASTE, PRICE, ETC
    • 태그 타입에 맞게 태그 목록을 그룹화 하고 모든 태그 목록을 반환하도록 구현
  • 관련 repository 테스트 추가
  • 관련 인수 테스트 추가

📢 논의하고 싶은 내용

  • DTO 패키지 위치

    • 기존 TagDto 클래스의 위치를 domain 패키지 -> dto 패키지로 이동
    • 현재 product 관련 dto 패키지는 product.dto에 위치하는데, review 관련 dto 패키지는 review.presentation.dto에 위치함
  • service 테스트 관련

    • 다른 조회 기능들처럼 이번에 구현한 전체 태그 목록 조회 service 메서드도 특별한 비즈니스 로직 없이 단순 조회만 반복하고 있다고 생각해서 repository 테스트만 작성하고 service 테스트는 추가하지 않았습니다.
    • 이 부분에 대해서 어떻게 생각하시나요??
  • 성능 관련

    • 일단 태그 타입 수만큼 조회를 하도록 간단하게 구현했는데, 여기서 성능을 더 개선할 방법이 있을까요??

⏰ 일정

  • 추정 시간 : 1h
  • 걸린 시간 : 2h

@github-actions
Copy link

github-actions bot commented Jul 27, 2023

Unit Test Results

45 tests   45 ✔️  6s ⏱️
21 suites    0 💤
21 files      0

Results for commit 2264706.

♻️ This comment has been updated with latest results.

Copy link
Member

@70825 70825 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

최고네요 👍

}

private void 전체_태그_목록_조회_결과를_검증한다(final ExtractableResponse<Response> response, final List<Tag> tags) {
final var expectedByType = tags.stream().collect(Collectors.groupingBy(Tag::getTagType));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Collectors.groupingBy()는 처음 보네요
덕분에 새로운 지식 공부했습니다 👍👍

Copy link
Collaborator

@hanueleee hanueleee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

망고의 택타입택타입

Comment on lines 23 to 37
public List<TagsResponse> getAllTags() {
final List<TagsResponse> responses = new ArrayList<>();
for (final TagType tagType : TagType.values()) {
getTagsByTagType(responses, tagType);
}
return responses;
}

private void getTagsByTagType(final List<TagsResponse> responses, final TagType tagType) {
final List<TagDto> tags = tagRepository.findTagsByTagType(tagType).stream()
.map(TagDto::toDto)
.collect(Collectors.toList());
final TagsResponse tagsResponse = TagsResponse.toResponse(tagType.name(), tags);
responses.add(tagsResponse);
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
public List<TagsResponse> getAllTags() {
final List<TagsResponse> responses = new ArrayList<>();
for (final TagType tagType : TagType.values()) {
getTagsByTagType(responses, tagType);
}
return responses;
}
private void getTagsByTagType(final List<TagsResponse> responses, final TagType tagType) {
final List<TagDto> tags = tagRepository.findTagsByTagType(tagType).stream()
.map(TagDto::toDto)
.collect(Collectors.toList());
final TagsResponse tagsResponse = TagsResponse.toResponse(tagType.name(), tags);
responses.add(tagsResponse);
}
public List<TagsResponse> getAllTags() {
final List<TagsResponse> responses = new ArrayList<>();
for (final TagType tagType : TagType.values()) {
responses.add(getTagsByTagType(responses, tagType));
}
return responses;
}
private TagsResponse getTagsByTagType(final TagType tagType) {
final List<TagDto> tags = tagRepository.findTagsByTagType(tagType).stream()
.map(TagDto::toDto)
.collect(Collectors.toList());
return TagsResponse.toResponse(tagType.name(), tags);
}

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

메소드 이름이 getTagsByTagType니까 TagsResponse를 반환하고 getAllTags에서 add해주는건 어떨까용

Copy link
Collaborator

@wugawuga wugawuga left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저희에 핵심 기능인 태그 구현 고생하셨습니다!!
LGTM~👍

@Go-Jaecheol Go-Jaecheol merged commit 461ac4f into develop Jul 28, 2023
3 checks passed
@Go-Jaecheol Go-Jaecheol deleted the feat/issue-156 branch July 28, 2023 08:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[BE] 전체 태그 목록 조회 기능 추가
4 participants